package cn.b504.qpcr.interfaces;

import azure2java.qpcradapter.adapter.entity.StatusBean;
import cn.b504.qpcr.entity.AjaxResult;
import cn.b504.qpcr.entity.Data;
import cn.b504.qpcr.entity.OperationInfo;
import cn.b504.qpcr.entity.data.QuantificationData;

import java.util.List;

public interface Device {

  /**
   * 搜索仪器并返回仪器信息
   *
   * @return 搜索到的仪器信息
   */
  AjaxResult search();

  /**
   * 断开仪器
   *
   * @param connectPort 仪器 connectPort
   */
  void disconnect(String connectPort);

  /**
   * 连接仪器
   *
   * @param connectPort 仪器 connectPort
   * @return 是否连接成功
   */
  AjaxResult connect(String connectPort);

  /**
   * 开始实验
   *
   * @return 执行后状态码
   */
  AjaxResult start(Data data);

  /**
   * 停止实验
   *
   * @param info 所需信息：ip、force
   * @return 执行后状态码
   */
  AjaxResult stop(OperationInfo info);

  /**
   * 暂停实验
   *
   * @param info 所需信息：ip、force
   * @return 执行后状态码
   */
  AjaxResult pause(OperationInfo info);

  /**
   * 重新开始实验
   *
   * @param info 所需信息：ip、force
   * @return 执行后状态码
   */
  AjaxResult restart(OperationInfo info);

  /**
   * 控制开关舱门
   * @return 执行后状态码
   */
  AjaxResult controlTray(Data data);

  short refreshData(String ip);

  StatusBean getStatus(String ip);

  QuantificationData getPCRData(String ip);

  List<List<Float>> getMeltData(String ip);
}
